1. Field
The following description relates to a physics simulation, and more particularly, relates to a method and system for accelerating the collision resolution on a reconfigurable processor.
2. Description of the Related Art
Physics simulations are used in a variety of computer graphics applications where virtual objects interact with one another in realistic fashion. For example, in video games, it is desirable to use a physics simulation pipeline to show how the objects in the game interact. For example, in a car racing game, if two cars come into contact at high speed, a Physics Engine identifies the collision and simulates the result of the collision in a realistic way.
Presently, computer and console gaming continue to gain in popularity as major sources of entertainment. As video games and related applications gained in popularity, it is not surprising that new technologies have arisen to provide added realism. In particular, the ability to model game play dynamics using relationships based upon Newtonian mechanics is now the norm.
A physics engine represents a graphics middleware component used to simulate interactions between objects in a manner depicting real world dynamics. In the present scenario, physics processing is done in central processing units (CPUs) or in Graphics Processing Units (GPUs). The Architecture for Dynamically Reconfigurable Embedded Systems (ADRES) design contains a tightly coupled very long instruction word (VLIW) processor and Coarse Grained Reconfigurable Array (CGRA/CGA). They are designed to exploit multiple levels of parallelism, namely instruction level parallelism (ILP) and loop level parallelism (LLP), respectively.
CPUs may have limited scope to utilize the massive parallelism that exists in physics. Graphical processing units can exploit the parallelism, but consume more power. The reconfigurable processors provide a low power alternative for running data intensive applications.
The Coarse Grained Array (CGA) in the architecture can provide a gain of an order equal to the number of computational units in the array. A reconfigurable processor can be used to parallelize the computational loops in physics modules. In particular, the constraints solver or collision resolver module in physics is an iterative algorithm that can be mapped for CGA mode operation.
The collisions are represented as linear complementary problems (LCPs) and are solved iteratively using steepest descent methods. But, the dependency between successive collision pairs prevents the possibility of CGA mapping. Rescheduling the order of processing the collision pairs is one way to remove the dependency. Although few rescheduling methods are available, they target either multi-threaded processing architectures or multi-core GPUs.